در اين قسمت به انواع و متغير ها در #C مي پردازيم .
برنامه نويسي در #C با انواع (Type) بسيار مرتبط بوده ، بنابراين براي برنامه نويسي در آن بايد ابتدا نوع هر چيز و طريقه ايجاد آن را بفهميم.
متغيرها، به بيان بسيار ساده، فضا هايي جهت ذخيره اطلاعات هستند. شما اطلاعاتي را در يك متغير قرار ميدهيد و از اين اطلاعات به وسيله متغير در عبارات #C استفاده مي نماييد. كنترل نوع اطلاعات ذخيره شده در متغيرها به وسيله تعيين كردن" نوع " براي هر متغير صورت مي پذيرد.
به طور كلي متغير ها يا از قبل در اين زبان تعريف شده اند يا توسط كاربر تعريف مي شوند.
متغيرهاي از پيش تعريف شده در #C :
انواع از پيش تعريف شده در #C را به همراه نام آنها در .Net FrameWork مي بينيد ، به عبارت ديگه نام آن ها در#C به منزله نام مستعار براي متغيرها در Net FrameWork. مي باشد ، و متداول است كه به هنگام برنامه #C از نام مستعار آن ها استفاده شود.
انواع از پيش تعريف شده كه در جدول زير مي بينيد شامل گروه هاي زير مي باشد:
• نوع (Boolean) كه تنها داراي دو حالت منطقي صحيح(True) و يا غلط(False) مي باشد.
• اعداد صحيح(integer)
• اعداد اعشاري(Floating points)
• نوع كاراكتر
نام | اندازه به بيت/نوع | محدوده تغيير | .Net FrameWork Type | مقدار اوليه | ||
bool | boolean | true,false | System.Boolean | false | ||
sbye | 8 bit | -128 _127 | System.Sbyte | 0 | ||
byte | 8 bit | 0 _ 255 | System.Byte | 0 | ||
short | 16 bit | -32767 _ 32767 | System.Int16 | 0 | ||
ushort | 16 bit | 0 _ 65535 | System.UInt16 | 0 | ||
int | 32 bit | -2147483648_ 2147483647 | System.Int32 | 0 | ||
uint | 32 bit | -4294967295_ 0 | System.UInt32 | 0 | ||
long | 64 bit | - 9223372036854775808_ 9223372036854775807 | System.Int64 | 0 | ||
ulong | 64 bit | 0 _ 18446744073709551615 | System.UInt64 | 0 | ||
float | 32 bit | 1.58 * 10-45 _ 3.4 * 1034 | System.Single | 0.0f | ||
double | 64 bit | 5* 10-324 _ 1.7 * 10 308 | System.Double | 0.0d | ||
decimal | 128 bit | ±1.0 * 1028 _± 7.9 * 1028 | System.Decimal | 0m | ||
char | 16 bit | U+0000 _ U+ffff | System.Char | \*0000 |
نكته : در زبان #C نوع char نيز نوع خاصي از انواع عددي است كه رنجي بين صفر تا 65535 دارد و اندازه آن نيز 16 بيتي است، اما به جاي نمايش دادن مقادير عددي تنها مي تواند بيان كننده يك كاراكتر باشد.
نكته : انواعي از نوع floating point هنگامي استفاده مي شوند كه محاسبات عددي به دقت هاي اعشاري نياز داشته باشند. اين نوع تنها در زبان#C وجود دارد و در زبان هاي مشابه به آن نظير Java چنين نوعي در نظر گرفته نشده است.
دو نوع ديگر كه در جدول زير مشاهده مي كنيد ، از پيچيدگي بيشتري برخودار مي باشند:
نام | تعريف | .NetFrameWork Type |
object | كلاس پايه كه انواع ديگر از آن مشتق مي شوند | System.Object |
string | يك دنباله از كاراكتر هاي يونيكد | System.String |
در كنار 15 نوع از پيش تعريف شده ، شما هم مي توانيد انواع (Types) خودتان را تعريف كنيد. انواعي كه توسط كاربر قابل تعريف مي باشند ، شامل 6 دسته بوده كه در ادامه آمده است:
• class types
• struct types
• array types
• enum types
• delegate types
• interface type
متغيرها، به بيان بسيار ساده، فضاهايي جهت ذخيره اطلاعات هستند. شما اطلاعات را در يك مكان (كه همان متغير است) قرار داده و با استفاده از نام متغير از آن استفاده مي كنيد. كنترل نوع اطلاعات ذخيره شده در متغيرها به وسيله تعيين كردن نوع براي هر متغير صورت ميپذيرد. در #C متغير ها شامل چهار دسته ي مختلف بوده كه در جدول زير اين دسته بندي را ملاحظه مي كنيد:
نام | توضیح |
Local Variable | اين دسته اطلاعات موقت در داخل محدوده يك متد را نگه داري مي كند |
Field | اين دسته اطلاعات مربوط به يك نوع را نگه داري مي كند |
Parameter | اين دسته براي نگه داري و انتقال اطلاعات از يك متد به متد ديگر به كار مي رود. |
Array element | از اين دسته براي نگه داري اطلاعات موقت يا يك نوع از اطلاعات استفاده مي شود |
تعريف متغير:
هر متغيري را قبل از آنكه مورد استفاده قرار بگيرد مي بايست تعريف نمود، تعريف متغير دو عمل را انجام مي دهد :
• نوع و نام هر متغير را مشخص مي كند
• به كامپايلر اجازه مي دهد كه فضايي را در حافظه بدان اختصاص دهد.
استفاده از var1 مقداري در آن ذخيري نشده است.
public int f()
{
int var1;
return var1;
}
مي توان متغير را در همان ابتدا مقدار دهي كرد:
public int f()
{
int var1 = 5;
return var1;
}
public int f()همچنين مي توان چند متغير را به طور همزمان و با يك دستور تعريف كرد اما در اين مورد بايد به دو مورد توجه داشته باشيد :
{
int var1 = new int(); // Default value:0
return var1;
}
• متغيرهايي كه در يك دستور تعريف مي كنيد بايد داراي نوع (Type) يكساني باشند.
• نام متغيرها بايد به وسيله كاما از يكيدگر جدا گردد.
int var1=3 , var2 , var3;براي رفع اين مشكل مي توان از روش هاي مختلف تبديل متغير(Casting) استفاده نمود، كه در جاي ديگر به مفاهيم آن خواهيم پرداخت.
int i;
i = "this is a test"; // Error: "Cannot implicitly convert type 'string' to 'int'"
نكته :هنگامي كه متغيري را از جنس string تعريف مي كنيد برخي از حروف به دلايل مختلف از راه معمولي قابل نمايش نمي باشند، براي رفع اين مشكل در #C از Escape Sequence استفاده مي شود ،تمامي Escape Sequence با يك (\ ) شروع مي شوند و كاراكتر كه در ادامه (\ ) مي آيد وظيفه آن را مشخص مي كند.
لازم است كه بدانيد Escape Sequence تنها به اين منظور نبوده و برخي از آن ها محل قرار گيري مكان نما را تغيير مي دهند ، در نظر داشته باشيد كه خود اين علائم در خروجي نمايش داده نمي شوند . فهرست كامل آن را در جدول زير مشاهده مي كنيد:
Character | Escape Sequence |
' | \' |
" | \" |
\ | \\ |
(كاركتر 7 جدول كد اسكي) | \a |
Backspace(يك كاراكتر را پاك مي كند) (كاراكتر 8 جدول كد اسكي) | \b |
(كاراكتر 12 جدول كد اسكي) | \f |
(كاراكتر10 جدول كد اسكي)براي انتقال كرسر به خط بعد استفاده مي شود | \n |
براي انتقال كرسر به ابتداي خط فعلي مي باشد(كاراكتر13 جدول كد اسكي) | \r |
براي انتقال كرسر به جلو به اندازه يك tab استفاده مي شود(كاراكتر9 كد اسكي) | \t |
(كاراكتر 11 جدول كد اسكي) | \v |
يك كاراكتر يونيكد كه به وسيله كدش مشخص شده باشد | \u |
يك كاراكتر يونيكد كه به وسيله كدش در مبناي هگزادسيمال مشخص شده باشد | \x |
Null(كاراكتر 0 جدول كد اسكي) | \0 |
مثالي براي Escape Sequence:
using System;حال مثالي ساده را با يكديگر بررسي مي كنيم!
class Welcome
{
static void Main(string[] args)
{
Console.Write("\t\u0048\u0065\u006C\u006C\u006F \n\twelcome\n\tto\n\t\"C#\" Programming!");
Console.ReadLine();
}
}
/* output:
Hello
to
"C#" Programming!
*/
مثال:
using System;
class Addition
{
static void Main( string[] args )
{
string firstNumber, // تعيريف دو متغير به طور همزمان
secondNumber;
// تعيريف سه متغير به طور همزمان
int number1, // first number to add
number2, // second number to add
sum; // sum of number1 and number2
// متن مورد نظر را روي صفحه نشان مي دهد
Console.Write( "Please enter the first integer: " );
// قرار دادن ورودي خوانده شده از صفحه كليد در متغيراول
firstNumber = Console.ReadLine();
Console.Write( "\nPlease enter the second integer: " );
// قرار دادن ورودي خوانده شده از صفحه كليد در متغيراول
secondNumber = Console.ReadLine();
// تبديل نمودن نوع رشته به نوع عددي توسط يك متد
number1 = Int32.Parse( firstNumber );
number2 = Int32.Parse( secondNumber );
// جمع نمودن اعداد
sum = number1 + number2;
// نمايش نتيجه در خروجي
Console.WriteLine( "\nThe sum is {0}.", sum );
} // end method Main
} // end class Addition
بن مایه ها:
Illustrated C# 2008 by Daniel Solis